cmake_minimum_required(VERSION 3.14)
project(tools)
set(CMAKE_CXX_STANDARD 17)

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}  -fprofile-arcs -g")
add_definitions(-DQT_NO_WARNING_OUTPUT -DQT_NO_INFO_OUTPUT -DQT_NO_DEBUG_OUTPUT)

if (NOT DEFINED TARGET_ARCH)
    set(TARGET_ARCH pcie)
endif()
    
if (${TARGET_ARCH} STREQUAL "pcie")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -pthread")
    
    # qt
    set(CMAKE_AUTOMOC ON)
    find_package(Qt5 COMPONENTS Core Gui Widgets QUIET)
    if(Qt5_FOUND)
        message("================= using QT =================")
        set(FFMPEG_DIR  /opt/sophon/sophon-ffmpeg-latest/lib/cmake)
        find_package(FFMPEG REQUIRED)
        include_directories(${FFMPEG_INCLUDE_DIRS})
        link_directories(${FFMPEG_LIB_DIRS})
        
        set(OpenCV_DIR  /opt/sophon/sophon-opencv-latest/lib/cmake/opencv4)
        find_package(OpenCV REQUIRED)
        include_directories(${OpenCV_INCLUDE_DIRS})
        link_directories(${OpenCV_LIB_DIRS})
        
        set(LIBSOPHON_DIR  /opt/sophon/libsophon-current/data/libsophon-config.cmake)
        find_package(LIBSOPHON REQUIRED)
        include_directories(${LIBSOPHON_INCLUDE_DIRS})
        link_directories(${LIBSOPHON_LIB_DIRS})
        
        set(BM_LIBS bmlib bmrt bmcv yuv)
        find_library(BMJPU bmjpuapi)
        if(BMJPU)
        set(JPU_LIBS bmjpuapi bmjpulite)
        endif()
        
        include_directories(../../../framework)
        include_directories(../../../framework/include)
        
        include_directories(../../../3rdparty/spdlog/include)
        include_directories(../../../3rdparty/nlohmann-json/include)
        include_directories(../../../3rdparty/httplib)
        
        include_directories(include)
        add_library(qt_display SHARED
        src/qt_display.cc
        src/BMLabel.cc
        src/moc_bmlabel.cc
        )

        target_link_libraries(qt_display Qt5::Core Qt5::Gui Qt5::Widgets ${FFMPEG_LIBS} ${OpenCV_LIBS} ${BM_LIBS} ${JPU_LIBS} -lpthread)

    else()
        message("================== Warning =================")
        message("               QT is not used ")
        message("============================================")

    endif()
    
    
elseif (${TARGET_ARCH} STREQUAL "soc" AND DEFINED QTPATH)
    add_compile_options(-fPIC)
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}  -fprofile-arcs -ftest-coverage -g -rdynamic")
    # set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}  -fprofile-arcs -ftest-coverage -rdynamic")
    set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
    set(CMAKE_ASM_COMPILER aarch64-linux-gnu-gcc)
    set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)

    include_directories("${SOPHON_SDK_SOC}/include/")
    include_directories("${SOPHON_SDK_SOC}/include/opencv4")
    link_directories("${SOPHON_SDK_SOC}/lib/")
    set(BM_LIBS bmlib bmrt bmcv yuv)
    find_library(BMJPU bmjpuapi)
    if(BMJPU)
        set(JPU_LIBS bmjpuapi bmjpulite)
    endif()
        
    # set(CMAKE_AUTOMOC ON)
    include_directories("${QTPATH}/include/QtCore")
    include_directories("${QTPATH}/include/QtGui")
    include_directories("${QTPATH}/include/QtWidgets")
    include_directories("${QTPATH}/include")

    include_directories(../../../framework)
    include_directories(../../../framework/include)

    include_directories(../../../3rdparty/spdlog/include)
    include_directories(../../../3rdparty/nlohmann-json/include)
    include_directories(../../../3rdparty/httplib)

    include_directories(include)
    add_library(qt_display SHARED
        src/qt_display.cc
        src/BMLabel.cc
        src/moc_bmlabel.cc
    )
    target_link_libraries(qt_display ${QTPATH}/lib/libQt5Core.so ${QTPATH}/lib/libQt5Gui.so ${QTPATH}/lib/libQt5Widgets.so ${FFMPEG_LIBS} ${OpenCV_LIBS} ${BM_LIBS} ${JPU_LIBS} -fprofile-arcs -lgcov -lpthread)
endif()
